package com.itheima.d2_final;

public class FinalDemo1 {
    public static void main(String[] args) {
        // 目标：掌握final关键字的基本作用。

        //final 修饰类,特点：不能被继承
        //final 修饰方法，特点：方法不能被重写
        //final 修饰变量，特点：只能赋值一次

        //局部变量被final修饰
        //一旦给final变量赋值后，之后就不能改变该值
        final int age = 10;
        //age = 11; //报错

        final int height;
        height = 180;
        //height = 181;//报错

        //引用类型final变量
        // final修饰的引用类型变量，地址不能变
        //但是地址对应的空间内容可以变化。String数据除外，String内容一旦定义后就不能变
        final int[] score = new int[88];
        //score = new int[100];
        score[0] = 100;
        score[0] = 99;
        System.out.println("score[0] = " + score[0]);


    }
}


/*
String 就是一个final类，不能写子类去继承。
class MyString extends String{

}
*/

class Animal {
    public void eat() {
        System.out.println("动物吃东西");
    }

    public final void sleep() {
        System.out.println("动物在睡觉");
    }
}

class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫猫在吃鱼！！");
        sleep();//子类中可以使用父类中的final方法
    }

   /*
    final方法不能被重写
    public  void sleep(){

    }
    */
}
